#!/bin/bash
# script name: 容器 MySQL 全库热备脚本
# author: subushi
# update date: 2023.08.10

# 手动创建备份路径: mkdir /backup
# 安装crontab: yum provides crontab && yum install /usr/bin/crontab
# 编写计划任务: crontab -e
# 设定每天9:01执行一次动作: 1 9 * * * sh /data/mysqldump.sh
# 重启crond生效: systemctl restart crond.service


# 设置备份名称变量
name=all-data


# 全局备份
docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p"123123"' > /backup/$name.`date +%F_%H-%M-%S`.sql


# 列出当前备份文件数量
cd /backup
sum=`ls -l  | awk  '$NF ~ /^'$name'.[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}\.sql$/{print $0}'|wc -l`


# 过滤出最旧的备份文件
old_file=`ls -lt  | awk  '$NF ~ /^'$name'.[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}\.sql$/{print $NF}'|tail -n 1`


# 文件总数超过 7 则删除最旧文件
if (( $sum > 7 ))
then
  rm -rf  $old_file
fi
